package org.dayatang.domain;


/**
 * 查询条件接口
 * @author yyang
 */
public interface QueryCriterion {

        static final String ROOT_ALIAS = "rootEntity";
	
	/**
	 * 执行AND操作，返回代表两个QueryCriterion的“与”操作结果的一个新的QueryCriterion
	 * @param criterion 另一个QueryCriterion
	 * @return 当前对象与criterion的“与”操作的结果
	 */
	QueryCriterion and(QueryCriterion criterion);
	
	/**
	 * 执行OR操作，返回代表两个QueryCriterion的“或”操作结果的一个新的QueryCriterion
	 * @param criterion 另一个QueryCriterion
	 * @return 当前对象与criterion的“或”操作的结果
	 */
	QueryCriterion or(QueryCriterion criterion);
	
	/**
	 * 执行NOT操作，返回代表当前对象的“非”操作的一个新的QueryCriterion
	 * @return
	 */
	QueryCriterion not();
	
	/**
	 * 是否空条件
	 * @return 如果是空条件就返回true，否则返回false
	 */
	boolean isEmpty();
        
        /**
         * 是否集合参数
         * @return 
         */
        boolean isCollection();
	
	/**
	 * 转换成JPQL字符串
	 * @return
	 */
	String toQueryString();
        
        /**
         * 获得查询参数
         * @return 
         */
        NamedParameters getParameters();
        
        
}
